應該有不少人想嘗試 Arch 時,在一開始的安裝步驟就先被勸退了,記得蠻久以前的我也是如此。不過就在約兩年前當我的 manjaro 初體驗進行到7個月就突然炸掉之後,我又回去試著安裝 Arch,這次順利的成功了,從此也就成了 Arch 的愛用者。
雖然在 Arch 台灣社群中有提到,「根本就沒有新手,又或者在 Arch 社群裡人人遇到安裝都是新手」,不過只要好好的 follow 官方 wiki 的 installation guide,其實該做該注意的裡面都已經寫上了,只要耐心的閱讀相信多數問題都可以迎刃而解。
話雖如此,還是想要寫一篇自已的 Arch 安裝手冊,一方面這是屬於我個人的筆記,比較以個人用途為優先(但步驟大都是官方 wiki 的內容),再者這個安裝流程在這兩年多來的幾次 Arch 安裝過程裡都是完全適用,沒有一次需要修改,所以我覺得還算是值得參考與記錄。
硬體環境
雖然硬體環境並不是特別重要,不過還是列一下我最近一次安裝 Arch Linux 的電腦配備
CPU: AMD Ryzen 9 7950X3D 16-Core, 32-Thread
MainBoard: ASUS ROG STRIX X670E-F GAMING WIFI
Memory: Micron Crucial DDR5 4800 32G * 2
Graphic: ASUS TUF Gaming Radeon RX 7900 XTX OC Edition 24GB GDDR6
Arch Linux 的安裝我把會把它分為兩個部分,pre install 與 post install,pre install 就是類似裝 ubuntu 用 live cd 安裝的過程,其操作並不是在實際安裝的磁區裡,而是在 live cd 的環境中設定電腦,以下幾個就是 pre install 的步驟:
硬碟分割與格式化
硬碟分割
用 gdisk 分割目標硬碟
gdisk /dev/dev/nvme0n1
在 gdisk 的介面中,按 ? 來查看所有的指令,可以很簡單分割出想要的磁區規劃,下面就簡單記一下分割第一個磁區時在 gdisk 裡所需要的操作:
查看硬碟分割區狀態
Command (? for help): p
建立新的磁區
Command (? for help): n
選擇分割區(直接按 enter 選預設的就好)
Command (? for help):
選擇起始磁區位置(直接按 enter 選預設的就好)
Command (? for help):
選擇結束磁區位置(可直接用想要切幾G的數字來表示,本例是幫 /boot 切 1G)
Command (? for help): +1G
為磁區加上 partition type codes,習慣上我會切成 /boot、/ 與 /home 三個區,所以這邊列出三種磁區的代碼,雖然代碼沒有硬性規定,但照上面來設計在日後磁區識別上還是相當有用:
/boot ef00(EFI)
/ 8304(root)
/home 8302(home)
Command (? for help): ef00
最後再用 p 看一次目前的狀況,確認無誤就就可以用 w 進行實際的分割。
Command (? for help): w
完成後就可以用 blkid 來檢查一下磁區是否有劃好,有劃好的話應該會看到類似下面的訊息
/dev/sr0: BLOCK_SIZE="2048" UUID="2023-11-01-06-55-57-00" LABEL="ARCH_202311" TYPE="iso9660" PTUUID="fd38acc6" PTTYPE="dos"
/dev/loop0: BLOCK_SIZE="1048576" TYPE="squashfs"
/dev/nvme0n1p2: PARTLABEL="Linux x86-64 root (/)" PARTUUID="2c40c551-cf01-4f6d-b731-058290cc038c"
/dev/nvme0n1p3: PARTLABEL="Linux /home" PARTUUID="3b4e9a75-5c87-111f-87e0-a62ce6ce94d7"
/dev/nvme0n1p1: PARTLABEL="EFI system partition" PARTUUID="c8702579-6dab-4283-adaf-caf98515b01b"
硬碟格式化
劃分好磁區後,接著就來格式化磁區,除了給 /boot 的磁區用 FAT32 以外,其它的我們都用 ext4 來格式化(想用其它格式也可以)
mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3
格式化結果
blkid
/dev/sr0: BLOCK_SIZE="2048" UUID="2023-11-01-06-55-57-00" LABEL="ARCH_202311" TYPE="iso9660" PTUUID="fd38acc6" PTTYPE="dos"
/dev/loop0: BLOCK_SIZE="1048576" TYPE="squashfs"
/dev/nvme0n1p2: UUID="45e7bd42-c017-4310-8437-6ff3df288e54" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux x86-64 root (/)" PARTUUID="3dbe7a27-f8a1-4621-8f34-7ef406a39c4b"
/dev/nvme0n1p3: UUID="d17578e3-3eb7-46d4-b042-ae0b4694f764" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux /home" PARTUUID="ed397706-2bfa-40f3-91e9-cc947ae32703"
/dev/nvme0n1p1: UUID="841A-84AD" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="a5aae042-fbc0-47c9-ac88-0240d953827f"
建立與掛載安裝目錄
接著我們把之後要使用的系統目錄先掛載起來
因為在使用 gdisk 分割磁區時已經有先定義好不同用途磁區的 PARTLABEL,所以可以利用 label 來幫我們識別磁區的實體路徑
掛載根目錄 /
mount $(blkid | grep root | awk -F ":" '{print $1}') /mnt
建立 /boot 與 /home
mkdir /mnt/boot /mnt/home
掛載 /home
mount $(blkid | grep home | awk -F ":" '{print $1}') /mnt/home
掛載 /boot
mount $(blkid | grep EFI | awk -F ":" '{print $1}') /mnt/boot
安裝網卡驅動程式
一般情況下是不需要這步驟的,但我的主機板是垃圾 Intel I225-V 2.5G 網卡,會沒理由的無預警斷線,所以後來買了Broadcom 10G 網卡,但這張是需要另外裝驅動才能用。
因此這邊我需要先在別台電腦下載網卡的驅動程式,存到隨身碟後,把網卡驅動裝好才能繼續安裝Arch
Broadcom 網卡的驅動檔名應該是長下面的樣子:
linux-firmware-bnx2x-xxxxx.pkg.tar.zst
linux-firmware-bnx2x-xxxxx.pkg.tar.zst.sig
載好放到隨身碟後,再掛載起來安裝
# 我的隨身碟為 /dev/sde1
mount /dev/sde1 /media && cd /media
sudo pacman -Sy linux-firmware-bnx2x
裝完後應該就有網路可用了
正式安裝 Arch
pacstrap /mnt base linux linux-firmware linux-firmware-bnx2x
這步就是把 Arch 裝到 /mnt 裡(之後的 /),這裡趁有網路的時候把 Broadcom 的網卡驅動也一併裝上,之後真的進入 Arch 後才不會沒有網路可用。
其實這步也可以把個人常用的套件都一起裝,不過這邊我只選擇安裝最基本需要的系統核心。
產生 fstab
genfstab -U /mnt >> /mnt/etc/fstab
Change root to /mnt
這邊利用 change root /mnt,先進入 Arch 系統中做一些基本設定
arch-chroot /mnt
安裝常用套件
pacman -Sy \
vim \
bash-completion \
sudo \
openssh \
networkmanager
以上都是我常用的套件,算是基本中的基本
設定時區、地區、語言
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
hwclock --systohc
sed -i 's/#en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen
sed -i 's/#zh_TW.UTF-8/zh_TW.UTF-8/' /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
設定 hostname 與 root 密碼
# 看你要取啥名都隨意,這邊範例用 archlinux
echo "archlinux" > /etc/hostname
passwd
安裝 UEFI grub
這邊就直接用 UEFI 的 grub,不用 MBR 了
pacman -Sy \
grub \
efibootmgr \
dosfstools \
os-prober \
mtools
grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
其實到 grub 安裝好後,這是重開機就會正式進入我們的 Arch Linux 了,如果你想在 change root 的模式下多安裝或多設定東西也是 ok,不過個人這邊會選擇先重開機再正式進入 Arch,也就是進入前面提到的 post install(這時 archlinux 的安裝 iso 也可以取出了)
exit && reboot
Post Install
啟動網路
systemctl enable NetworkManager && systemctl start NetworkManager
設定時間同步與時區
sudo timedatectl set-timezone Asia/Taipei
# 192.168.100.1 是我的分享器,上面有 NTP Service
sudo sed -i 's/#NTP/NTP=192.168.100.1/' /etc/systemd/timesyncd.conf
sudo systemctl enable systemd-timesyncd.service && sudo systemctl enable systemd-timesyncd.service
建立使用者帳號與設定使用者密碼
$USER 請替代成你想用的 user name
useradd -m $USER
echo "$USER ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$USER
chmod 600 /etc/sudoers.d/$USER
passwd $USER
改變 Arch 更新與下載的節點
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
備份後,可參照下面的步驟調整
建立 home 目錄底下的資料夾、給其它磁區的掛載點、ramdisk 掛載點
這部分就是個人向的設定,因為我是日常生活在用的,所以一些 Music、Documents 的基本資料夾都會建起來,也有其它顆硬碟會掛到 /mnt 裡的資料夾,劃出 ramdisk 的資料夾則是個人的使用習慣
利用 xdg-user-dir 來建立 Music…等資料夾(也可以不用這個套件,手動建立)
sudo pacman -Sy xdg-user-dirs && xdg-user-dirs-update
建立硬碟與 ramdisk 掛載點
sudo mkdir /ramdisk /mnt/data /mnt/workshop
建立放瀏覽器 cache 的資料夾
mkdir -p /home/$USER/.cache/mozilla \
/home/$USER/.cache/vivaldi \
/home/$USER/.cache/google-chrome
賦予權限
sudo chown $USER:$USER /mnt/data /mnt/workshop /ramdisk
修改 fstab
這步也是完全個人向的設定,主要是把其它的硬碟掛載到剛才建立的掛載點裡,另外就是設定剛才的 ramdisk 與 瀏覽器 cache,讓它們吃 Ram 的空間,不寫入 ssd裡。最後就是把個人的資料掛進 /home/$USER 裡的各分類資料夾
# /dev/sda1 workshop on MX500 500G
UUID=5e9c524a-fefe-46c2-ad72-b364851efda0 /mnt/workshop ext4 rw,relatime 0 2
# /dev/sdb1 data on MX500 2T
UUID=ef0b6183-05e5-495b-85f6-1c7b36d7bd50 /mnt/data ext4 rw,relatime 0 2
# RamDisk
tmpfs /ramdisk tmpfs rw,nodev,nosuid 0 0
# Firefox cache
tmpfs /home/$USER/.cache/mozilla tmpfs rw,nodev,nosuid 0 0
# Vivaldi cache
tmpfs /home/$USER/.cache/vivaldi tmpfs rw,nodev,nosuid 0 0
# Chrome cache
tmpfs /home/$USER/.cache/google-chrome tmpfs rw,nodev,nosuid 0 0
/mnt/data/Documents /home/$USER/Documents none defaults,bind 0 0
/mnt/data/Downloads /home/$USER/Downloads none defaults,bind 0 0
/mnt/data/Music /home/$USER/Music none defaults,bind 0 0
/mnt/data/Pictures /home/$USER/Pictures none defaults,bind 0 0
/mnt/data/Videos /home/$USER/Videos none defaults,bind 0 0
/mnt/data/Desktop /home/$USER/Desktop none defaults,bind 0 0
安裝 timeshift
timeshift 是 Linux 上一個類似 Mac Time Machine 的工具,非常的好用,建議系統有任何大變動或是想試裝軟體之前都要做一次 snapshot(尤其是更新 Gnome 前)
sudo pacman -Sy git base-devel
git clone https://aur.archlinux.org/timeshift.git
cd timeshift && makepkg -si
安裝 yay
yay 是用來安裝 AUR packages 的輔助工具,必裝!
git clone https://aur.archlinux.org/yay.git
cd yay && makepkg -si
安裝 Gnome
個人習慣偏 MacOS 的操作方式,因此選用 Gnome
安裝 Gnome 核心套件
gnome-shell 是最核心的組件,gdm 則是 Gnome 的 graphical display servers 並且提供了的 login 畫面
sudo pacman -Sy gnome-shell gdm
sudo systemctl enable gdm
enable 後,重開機就可以看到 Gnome 的登入畫面啦
sudo reboot
安裝 Gnome 常用套件
底下幾個是我常用的套件,除了 evince、gedit、nautilus 可依個人習慣選用,其它的都建議要裝
- evince:PDF 閱讀器
- gedit:輕量的文字編輯器
- nautilus:檔案管理程式
- gnome-control-center:Gnome 設定中心
- gnome-tweaks:Gnome 調校程式
- gnome-shell-extensions:外掛程式管理
- gnome-terminal:終端機程式
- file-roller:壓縮程式
sudo pacman -Sy \
evince \
gedit \
nautilus \
gnome-control-center \
gnome-tweaks \
gnome-shell-extensions \
gnome-terminal \
file-roller
安裝 Gnome 瀏覽器整合套件
安裝整合套件後,Gnome 的外掛 plugins 就可以使用瀏覽器在它們的網站上進行開啟關閉等功能,不用再另外手動下載,非常方便
git clone https://aur.archlinux.org/gnome-browser-connector.git
cd gnome-browser-connector && makepkg -si
也可以使用 yay 安裝
yay -Sy gnome-browser-connector-git
個人常用的 Gnome extensions
- AppIndicator and KStatusNotifierItem Support
- Arch Linux Updates Indicator
- Input Method Panel
- Gnome 4x UI Improvements
另外下面幾個也可以試試看
額外的 Gnome 套件
這些就看個人喜好,有需要的時候再裝
sudo pacman -S \
gnome-backgrounds \
gnome-color-manager \
gnome-disk-utility
gnome-font-viewer \
gnome-logs \
gnome-screenshot #(if necessary)
安裝常用工具
這些都是個人覺得蠻必要裝的工具
sudo pacman -Sy \
pavucontrol \
qt5-wayland \
man-db \
gnome-keyring
下面這些則是一些基礎指令的強化版本
sudo pacman -Sy eza bat ncdu fd duf
到這邊基本的 Arch Linux 就算是安裝完成了,接下來幾篇再來寫一下 Arch 裡一些常用工具的安裝
參考資料: